package com.soulgame.sms.net;

import java.text.SimpleDateFormat;
import java.util.Date;

import com.soulgame.sgsdkproject.sgtool.MD5Utils;
import com.soulgame.sgsdkproject.sgtool.OrderIdUtils;

/**
 * @author lch
 * @version Create time：2017-3-29
 * @类说明：
 */
public class NetUtils {

	/**
	 * 下订单时告诉自己服务端
	 */
	public static final String PAY_URL_ROOT = "http://uc.soulgame.mobi/smspay/";

	public static final String PAY_URL_VER = "1.0";// 下单协议版本号

	public static final String PAY_URL_EXT = "/order";// 下单协议后缀

	public static final String SIGN_KEY = "nf&&sdaNa!we^2";// 签名 加盐 部分

	// ===============================================
	// MM
	public static final String PAY_TYPE_MM = "/mm";
	// 爱动漫
	public static final String PAY_TYPE_ADM = "/icartoons";
	// 爱游戏
	public static final String PAY_TYPE_EGAME = "/ctcc";
	// 咪咕
	public static final String PAY_TYPE_MIGU = "/jd";
	// 联通沃商店
	public static final String PAY_TYPE_WOSHOP = "/cucc";
	// ===============================================
	/** 发送状态，0未发送短信，1发送成功，2发送失败，3取消发送 **/
	public static final String PARAM_STATUS = "status";
	/** 用户唯一标示，由应用与手机生产,服务端返回的 **/
	public static final String PARAM_AUIT = "auit";
	/** 应用唯一标示 **/
	public static final String PARAM_APP_TOKEN = "app_token";
	/** 手机唯一标示 **/
	public static final String PARAM_PHONE_TOKEN = "phone_token";
	/** 物品标示字段 **/
	public static final String PARAM_GOODSID = "goodsid";
	/** 订单id，唯一，由3个字段组成：时间8位，phone_token前8位，物品（可选） **/
	public static final String PARAM_ORDERID = "orderid";
	/** 游戏订单id，网游的游戏服务器返回 **/
	public static final String PARAM_GAME_ORDER = "game_order";
	/** 价钱，单位分 **/
	public static final String PARAM_PRICE = "price";
	/** 签名字段，由MD5(app_token+phone_token+orderid+price+接口key)生成 **/
	public static final String PARAM_SIGN = "sign";
	/** 扩展字段 **/
	public static final String PARAM_EXTRAINFO = "extrainfo";
	// ===============================================
	/**
	 * 获取下单 url
	 * 
	 * @param pUrlGameNickName
	 *            针对每个游戏的别名，从配置文件获取
	 * @param pUrlPayType
	 *            针对不同的支付类型的标识，用上面的常量如：PAY_TYPE_MM、PAY_TYPE_ADM
	 * @return
	 */
	public static String getOrderUrl(String pUrlGameNickName, String pUrlPayType) {

		return PAY_URL_ROOT + pUrlGameNickName + pUrlPayType + PAY_URL_VER + PAY_URL_EXT;
	}

	/**
	 * 获取签名信息
	 * 
	 * @param appToken
	 * @param phoneToken
	 * @param orderId
	 * @param price
	 * @param signKey
	 * @return
	 */
	public static String getSign(String appToken, String phoneToken, String orderId, String price, String signKey) {
		StringBuffer str = new StringBuffer();
		str.append(appToken).append(phoneToken).append(orderId).append(price).append(signKey);
		return MD5Utils.getMD5String(str.toString());
	}

	/**
	 * 订单id，唯一，由3个字段组成：时间8位，phone_token前8位，物品（可选）
	 * 
	 * @param phoneToken
	 * @param length
	 *            指定返回的订单长度
	 * @return
	 */
	public static String getOrderId(String phoneToken, int length) {
		StringBuffer order = null;
		try {
			SimpleDateFormat dateFormat = new SimpleDateFormat("ddHHmmss");
			Date date = new Date();
			String time = dateFormat.format(date);

			String phString = phoneToken.substring(0, 8);

			order = new StringBuffer();
			order.append(time).append(phString);

			int len = order.length();
			if (length > len) {
				order.append(OrderIdUtils.getCharAndNumr(length - len));
			}
			
			return order.toString().substring(0, length);
			
		} catch (Exception e) { 
			e.printStackTrace();
		}

		return OrderIdUtils.getCharAndNumr(length);
	}
}
